// test_api.js - 测试 /checkImg 接口的示例脚本

const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
const path = require('path');

/**
 * 测试/checkImg接口
 * @param {string} imagePath - 图像文件路径
 */
async function testCheckImgAPI(imagePath) {
  try {
    // 检查文件是否存在
    if (!fs.existsSync(imagePath)) {
      console.error(`错误: 找不到文件 ${imagePath}`);
      return;
    }

    // 检查文件大小（限制5MB）
    const stats = fs.statSync(imagePath);
    const fileSizeInBytes = stats.size;
    const fileSizeInMB = fileSizeInBytes / (1024 * 1024);
    
    if (fileSizeInMB > 5) {
      console.error(`错误: 文件大小 ${fileSizeInMB.toFixed(2)}MB 超过限制（5MB）`);
      return;
    }

    console.log(`正在测试图像文件: ${imagePath}`);
    console.log(`文件大小: ${fileSizeInMB.toFixed(2)}MB`);
    console.log('正在发送请求到 /checkImg 接口...');

    // 创建表单数据
    const form = new FormData();
    form.append('image', fs.createReadStream(imagePath));
    
    // 发送请求
    const startTime = Date.now();
    const response = await axios.post('http://localhost:3001/checkImg', form, {
      headers: form.getHeaders(),
      maxContentLength: 5 * 1024 * 1024, // 5MB
    });
    const endTime = Date.now();
    
    // 输出结果
    console.log(`\n请求耗时: ${(endTime - startTime) / 1000} 秒`);
    console.log('检测结果:');
    console.log(JSON.stringify(response.data, null, 2));
    
    // 根据结果给出提示
    if (response.data.status === true) {
      console.log('\n✅ 未检测到不良内容');
    } else {
      console.log(`\n❌ 检测到不良内容: ${response.data.reason}`);
    }
    
  } catch (error) {
    console.error('\n请求失败:');
    if (error.response) {
      console.error(`状态码: ${error.response.status}`);
      console.error(`错误信息: ${JSON.stringify(error.response.data, null, 2)}`);
    } else if (error.request) {
      console.error('没有收到响应，请检查服务器是否已启动');
      console.error('请确保已运行: npm run dev');
    } else {
      console.error(`请求配置错误: ${error.message}`);
    }
  }
}

// 主函数
async function main() {
  // 检查命令行参数
  const args = process.argv.slice(2);
  let imagePath;
  
  if (args.length > 0) {
    imagePath = args[0];
  } else {
    // 如果没有提供参数，显示使用说明
    console.log('使用方法:');
    console.log('  node test_api.js <图像文件路径>');
    console.log('\n示例:');
    console.log('  node test_api.js ./test_image.jpg');
    console.log('\n注意:');
    console.log('  1. 请确保服务器已启动（npm run dev）');
    console.log('  2. 图像文件大小不能超过5MB');
    console.log('  3. 支持常见图像格式如JPG、PNG等');
    return;
  }

  // 运行测试
  await testCheckImgAPI(imagePath);
}

// 运行主函数
main();